Dynamically reconfigurable pipelined pre-processor

ABSTRACT

A pipelined video pre-processor includes a plurality of configurable image-processing modules. The modules may be configured using direct processor control, DMA access, or both. A block-control list, accessible via DMA, facilitates configuration of the modules in a manner similar to direct processor control. Parameters in the modules may be updated on a frame-by-frame basis.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to and the benefit of U.S. ProvisionalPatent Application Ser. No. 61/547,442, filed on Oct. 14, 2011, which ishereby incorporated herein by reference in its entirety.

BACKGROUND

A stream of video frames, such as that generated by a video camera orread from a memory, frequently requires processing to improve thequality of the video or to extract features from the video. Thisprocessing is traditionally done by software in a post-processingoperation. The post-processing operation may vary because (i) theparameters/coefficients of the algorithmic processing modules need to bemodified; (ii) fine variations of a given algorithm need to beperformed; and/or (iii) the operations that need to be performed on thevideo need to be changed. A software solution, however, while versatile,is slow and expensive in terms of processing power. Hardware-basedalgorithms are typically faster and more efficient, but hardware, by itsnature, is difficult to reconfigure quickly and easily, especially whenit must keep pace with live, streaming video. Existing hardware-basedimage processing systems thus produce non-optimal results because oftheir limitations in flexibility. A need therefore exists for a fast,efficient, and reconfigurable hardware-based image-processing system.

SUMMARY

In one embodiment of the current invention, a pipelined videopre-processor (“PVP”) is made up of several algorithmic transformationimage-processing modules that may be connected to each other in avariety of different, customizable configurations. Each of these moduleshas a plurality of parameter registers that control finite variations ofa given algorithm implementation. The parameters of the modules may bere-configured on a frame-by-frame basis with no loss of data, and theconfiguration of modules may be changed with minimal or no loss of data.The parameters may be changed via a connected processor, via DMA access,or both simultaneously. The differing control schemes are designed to becompatible with each other, ensuring seamless transitions between them.

In one aspect, a pipelined video pre-processor includes a plurality ofimage-processing modules arranged in a pipeline. An input port receivesconfiguration parameters for the plurality of modules, and an image-pipecontroller decodes the configuration parameters. A shadow registerapplies the configuration parameters to the plurality of modules,thereby altering the image-processing characteristics of the modules.

The pipeline may be a memory pipeline for processing image data from amemory or a camera pipeline for processing image data from a digitalcamera. One or more additional pipelines (e.g., memory pipelines orcamera pipelines) may be included. The configuration parameters may bereceived from a processor or a direct-memory access (“DMA”) engine. Theconfiguration parameters may be arranged in a memory in a block-controlstructure and are accessed via a DMA channel; the block-controlstructure may include a block-control header and one or moreblock-control words. The offsets of the block-control words in theblock-control structure may correspond to addresses in a memory-mappedregister (“MMR”) space. The configuration parameters may be applied to afirst frame of video data, and updated configuration parameters may beapplied to a second frame of video data. Different pipeline stages in amodule may receive the updated configuration parameters at differentpoints in time in accordance with a data boundary.

In another aspect, a method of processing image frames in a pipelinedvideo pre-processor includes receiving configuration parameters for aplurality of image-processing modules in the pipelined videopre-processor. The configuration parameters may be stored in a shadowregister and applied to the plurality of image-processing modules tothereby alter the image-processing characteristics of the modules.

The configuration parameters may be received from a processor or a DMAengine; the modules may be arranged in one or more pipelines. The one ormore pipelines may include a memory pipeline for processing image datafrom a memory or a camera pipeline for processing image data from adigital camera. The configuration parameters may be arranged in a memoryin a block-control structure and may be accessed via a DMA channel. Theblock-control structure may include a block-control header and one ormore block-control words. The offsets of the block-control words in theblock-control structure may correspond to addresses in a memory-mappedregister (“MMR”) space. The configuration parameters may be applied to afirst frame of video data and updated configuration parameters may beapplied to a second frame of video data. Different pipeline stages in amodule may receive the updated configuration parameters at differentpoints in time in accordance with a data boundary.

In another aspect, a pipelined video pre-processor in a digital-signalprocessor includes a plurality of image-processing modules arranged in apipeline and an input port for receiving configuration parameters forthe plurality of modules. An image-pipe controller decodes theconfiguration parameters, and a shadow register applies theconfiguration parameters to the plurality of modules, thereby alteringthe image-processing characteristics of the modules. The pipeline may bea memory pipeline for processing image data from a memory or a camerapipeline for processing image data from a digital camera.

These and other objects, along with advantages and features of thepresent invention herein disclosed, will become more apparent throughreference to the following description, the accompanying drawings, andthe claims. Furthermore, it is to be understood that the features of thevarious embodiments described herein are not mutually exclusive and canexist in various combinations and permutations.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, like reference characters generally refer to the sameparts throughout the different views. In the following description,various embodiments of the present invention are described withreference to the following drawings, in which:

FIG. 1 is a block diagram of a PVP in accordance with an embodiment ofthe present invention;

FIG. 2 is a block diagram of module configuration in accordance with anembodiment of the present invention;

FIGS. 3A and 3B are implementations of an arbitration scheme inaccordance with an embodiment of the present invention;

FIG. 4 is an illustration of a block-control list in accordance with anembodiment of the present invention;

FIG. 5 is an illustration of a block-control header in accordance withan embodiment of the present invention;

FIG. 6 is a block diagram of a frame-by-frame parameter update scheme inaccordance with an embodiment of the present invention;

FIG. 7 is a timing diagram of frame-by-frame updating in accordance withan embodiment of the present invention;

FIG. 8 a logic circuit 800 for gating the clocks and generating blockreset in accordance with an embodiment of the present invention;

FIG. 9 is an exemplary PVP in accordance with an embodiment of thepresent invention; and

FIG. 10 is block diagram of a system incorporating a PVP in accordancewith an embodiment of the present invention.

DETAILED DESCRIPTION

FIG. 1 illustrates an embodiment of a pipelined video pre-processor(“PVP”) 100. The PVP may operate on any incoming data; in oneembodiment, the data is video image data captured from a camera sensorand/or video image data fetched from a memory. The PVP may be placed ona stand-alone silicon chip; in other embodiments, the PVP is placed on achip along with a processor, such as a digital-signal processor. A firstinput-data formatter 102 may be used to format incoming camera data 104from a camera source, and a second input-data formatter 106 may be usedto format memory data 108 from a memory source. Data from one or moresources may be processed simultaneously. The present invention is notlimited to any particular number or kind of input sources, and the inputdata sources may include one or more camera sources 104 and/or one ormore memory sources 108. Each source 104, 108 may be received by its owninput-data formatter 102, 106 or may share input-data formatters 102,106 with other sources 102, 104.

The input-data formatters 102, 106 output formatted input data to one ormore reconfigurable pipelines 110, 112, 114, 116. Each pipeline 110,112, 114, 116 contains one or more processing modules 118. As explainedin greater detail below, the processing modules 118 perform a variety ofdifferent image-processing functions and tasks and may be selected andconfigured in accordance with a desired image-processing result. Thenumber of modules 118 per pipeline, the order of the modules 118 withinthe pipeline, and the configuration of the modules 118 within a pipelinemay be reconfigured as necessary, and a given module 118 may be selectedfor use in different pipelines 110, 112, 114, 116. FIG. 1 illustratesfour modules 118 in the first pipeline 110 (two modules 118 beingconfigured to operate in parallel), two modules 118 in the secondpipeline 112, one module 118 in the third pipeline 114, and two modules118 in the fourth pipeline 116. This configuration of modules ispresented as only one possible configuration of the PVP 100, however,and one of skill in the art will understand that many otherconfigurations are possible.

The outputs of the pipelines 110, 112, 114, 116 are received byoutput-data formatters 120, 122, 124, 126, which prepare the output data(by, for example, compressing or packing it) and send it off-chip viaoutput ports 128. In one embodiment, the output-data formatters 120,122, 124, 126 are connected via peer-to-peer connections to dynamic-dataexchange (“DDE”) modules used for connection with a bus protocol (e.g.,an AXI bus). In one embodiment, each pipeline 110, 112, 114, 116 has itsown output-data formatter 120, 122, 124, 126; in other embodiments, oneor more pipelines 110, 112, 114, 116 may share a single output-dataformatters (via use of, for example, a multiplexer to select between thepipelines).

Each module 118 may have internal configuration parameters that arecontrolled by an outside source. Each module 118 may have its own set oflocal parameter registers that determine the nature of processingoffered by that module within the confines of a given algorithm;additional parameter registers may be common to some or all of themodules 118. The parameter registers may include application registers130 and/or status registers 132; only one set of these registers isshown for illustrative purposes, but each module 118 may contain its ownset of application 130 and status 132 registers. As explained in greaterdetail below, the parameter registers may be read or written by avariety of sources, including a connected processor (via an interface134, such as an advanced peripheral bus or “APB” interface) or viadirect-memory access (“DMA”) though the use of input and output modules136. In one embodiment, control and status information is input andoutput via the use of shadow registers 138; the shadow registers 138read and write to the application registers 130 and/or status registers132 in accordance with the timing of image data currently moving througha pipeline 110, 112, 114, 116 so that, for example, a first set ofparameters is applied to a first frame in the pipeline and a second setof parameters is applied to a second frame in the pipeline. Animage-pipe controller 140 may be used to coordinate control of themodules 118, as explained in greater detail below.

In various embodiments, the modules 118 may include aconvolution/down-scaler engine (“CNV”); a pixel-magnitude andangle-computation unit (“PMA”); a threshold, histogram and compressionengine (“THC”); an arithmetic computation unit (“ACU”); a pixel-edgeclassifier (“PEC”); an integral image computation (“IIM”); and/or anup-down scaler (“UDS”). One of skill in the art will understand thatother modules may be included and that the present invention is notlimited to only these modules. The modules 118 may be selectivelyconnected to each other to create one or more different pipelines usingany method known in the art such as, e.g., a programmable crossbarswitch. In one embodiment, illustrated in FIG. 2, the modules 118 may beconfigured using multiplexers placed between them. In the system 200shown in FIG. 2, a first module 202 having three output ports and asecond module 204 having one output port are connected via a system ofmultiplexers 206 to a third module 208 having two input ports (and threeoutput ports). By controlling the select lines 210 of the multiplexers206, the third module 208 may receive any of the outputs of the first202 and second 204 modules as either of its two inputs 212. The selectlines 210 may be configured via processor or DMA control, in a mannersimilar to the configuration of other module parameters. One of skill inthe art will understand that other configurations for the multiplexers206 are also within the scope of the invention.

Any given module may be moved across the camera pipe and/or memory pipeas part of the pipe reconfiguration. The camera pipes may work on thepixel clock and the memory pipe may work on the system clock; bothclocks may be asynchronous with respect to each other. The PVParchitecture may ensure proper synchronization across clock domains sothat a module may be switched between the pipes.

1. Control of Modules from Multiple Sources

In one embodiment, the image-processing modules in the PVP may beaccessed by a linked processor via, for example, memory-mapped registers(“MMRs”) accessible via an APB interface (such as the interface 134shown in FIG. 1). A hardware interrupt may be asserted, for example, andthe processor may read and write status and control information to andfrom the PVP and its modules. Once the processing modules areappropriately configured, the flow of image data may be dictated eitherby the processor or by a DMA engine.

In another embodiment, the image-processing modules may be configured byeither or both of the APB interface (i.e., via the processor) and one ormore DMA interfaces. In one embodiment, all of the processing modulesare controlled at a first point in time by direct processor control and,at a second point in time, by DMA control. In another embodiment, afirst subset of the modules is configurable by direct processor controlwhile, simultaneously, a second subset is configurable by DMA control.For example, in the PVP, the first subset of modules may be modules thatprocess data stored in a memory (i.e., a memory pipe) and the secondsubset may be modules that process data coming from a camera sensor(i.e., a camera pipe). In another embodiment, there may be a plurality(e.g., two or more) separate DMA control channels. A first DMA controlchannel may control the first subset of modules and a second DMA controlchannel may control the second subset of modules. For example, the firstDMA control channel controls the camera pipe and the second controls thememory pipe. One of skill in the art will understand that othercombinations of read and write control are possible and that the currentinvention is not limited to any particular division of direct and DMAcontrol.

In one embodiment, direct or DMA control of the registers isaccomplished by reading or writing first to a set of scratch registers;once these scratch registers are fully written, for example, theircontents are then applied to the actual application registers. Likewise,reading of the control registers may first fill one or more scratchregisters, and then the scratch registers are read via DMA control. Thescratch registers may be the shadow registers 130, 132 shown in FIG. 1.In one embodiment, direct processor control by the APB interface is notallowed during loading or unloading of the shadow registers (i.e.,during the time the contents of the shadow registers are being appliedto the application registers or during the time the status registers arefilling the shadow registers).

Because control of the modules may come from different sources,conflicts may arise between multiple simultaneous requests. In oneembodiment, arbitration may be used to resolve conflicts between thedifferent control mechanisms. FIG. 3A illustrates an illustrativearbitration scheme 300 in accordance with an embodiment of theinvention. In this embodiment, a first DMA channel 302 is used toconfigure modules in a camera pipeline; modules in a memory pipeline maybe configured using either a second DMA channel 304 or an APB link 306for direct control by a processor. An arbitration unit 308 is used toresolve conflicts between the second DMA channel 304 and the APB link306. The arbitration unit 308 may include a stall or blackout mechanismto delay access to the DMA engine during some or all of its loadingphase and/or error signaling to thereby safeguard the validity of anysimultaneous accesses by the APB link 306. In one embodiment, thearbitration module 308 interfaces with the DMA engine 304 and the APBlink 306 and controls how the control data is programmed/arbitrated tothe image-processing modules. In one embodiment, the arbitration module308 is incorporated into the image-pipe controller (“IPC”) 140, shown inFIG. 1, and communicates with the DMA engine and processor via P2P andAPB buses, respectively. The image-processing modules may use aninternal bus, such as an AHB bus. One embodiment of an implementation ofthe arbitration logic is shown in FIG. 3B.

The clock controlling some or all of the image-processing modules may beon a different domain than that of the clock domain of the DMA andprocessor interfaces. In this case, the clocks may be synchronizedacross the different domains. In one embodiment, subsets of theimage-processing modules are arranged in a plurality of different-lengthpipes, and data may finish processing in a shorter pipe (and, e.g.,assert a load_done signal to indicate completion) before it finishesprocessing in a longer pipe. A synchronization module 310 may delaysynchronization of the early data until the later data is also availableby, for example, receiving a load_done signal from each of the pipelinesand sending a synchronization signal to the arbitration unit 308 whensome or all of the load_done signals have been received.

The bits of the parameter registers may be set or cleared by theprocessor using polling or interrupts. In one embodiment, DMA statuschannels may be used to scan out one or more values in the parameterregisters. For example, a histogram status may be scanned out, from theTHC module, on the DMA status channel. The trigger of the DMA statuschannel may be based on a vsync output at a given module. If twostatuses are requested over the same channel, an identifying field(e.g., numbers or letters) may be included in a status header for eachmodule's status, and the two statuses may be sequenced, one after theother, after recording the event.

2. Programming through DMA

To facilitate control through DMA, a special control-word format calleda block-control structure list (“BCL”) may be defined in a systemmemory. The BCL is an array of control information intended for theapplication registers in the image-processing modules in the PVP; thiscontrol information is grouped by module, and each group contains headerinformation (e.g., a block-control header or “BCH”) instructing the PVPwhere and how to apply the control information. The BCL is read in viaDMA, the header information is decoded by the image-pipe controller, andthe control information is thereby applied to the modules. The structureof the BCL may allow a new module to be added easily by, e.g., appendingor inserting a new module's BCH in the BCL.

FIG. 4 illustrates one embodiment of a BCL 400. A number of BCHs 402 areshown, each having an associated list of block-control words 404. FIG. 5illustrates an expanded view of a BCH 500. A first field BLOCK 502indicates a unique address assigned to each image-processing module inthe PVP, and thereby instructs the image-pipe controller to which moduleto apply the parameters. A second field WCNT 504 indicates the number ofcontrol words contained in this block, thereby indicating the locationof the next BCH. The use of the WCNT field may obviate the need for, forexample, an end-of-block indicating field at the end of the block.Another field, WOFF 506, indicates an offset to be applied to thecontrol words; for example, if a given module has a set of 256registers, specifying an offset of 10 means that the control words areapplied beginning at the tenth register. If WCNT is 12 (for example),registers 10 through 22 are programmed.

Further fields in the BCH indicate how a module should be connected toupstream and downstream modules using, for example, the multiplexercontrol illustrated in FIG. 2. For example, IPORT fields 508 may be usedto select a first level of multiplexers, and IBLOCK fields 510 may beused to select a second level of multiplexers. One of skill in the artwill understand, however, that any other method of specifyingmultiplexer programming using select bits is within the scope of thecurrent invention. Alternatively, all the IBLOCK(s) and IPORT(s) may beremoved from the BCH and a separate crossbar-control header format(i.e., a crossbar-control structure or “CCS” packet) may be defined.Other fields include a START bit 512 that indicates whether a moduleshould be enabled or disabled and a PIPE field 514 that indicates towhich pipe a module should belong (i.e., a camera or memory pipe).Another field, STATWCNT 516, indicates how many status registers in amodule should be read out in a read operation.

In one embodiment, a BCL for a given pipe begins with a configuration ofan input-data format module, includes configuration of one or moreimage-processing modules, and ends with a configuration of anoutput-data format module. The order of the configuration informationfor each image-processing module may correspond to the positions of themodules in the pipe. The BCH for a module may be repeated within a BCL(e.g., two or more times) to allow programming of two separate groups ofregisters for a given module inside a pipe. For example, a first BCH maybe used to program registers 10-22 of a module, and a second BCH may beused to program registers 100-110 of the same module.

The configuration of the BCH for a given module may correlate to thedirect processor control of the module via memory-mapped registers. Forexample, a given module may have a fixed base address for access via theprocessor; the BLOCK 502 identification number of the module (used forDMA control) may be derived from this base address. In one embodiment,the BLOCK 502 identification may be found by right-shifting the baseaddress by five bits. Similarly, the difference between an actual MMRaddress and the base address may correlate directly to the WOFF offsetfield in the BCH. Thus, each control word in the BCL is arranged in thesame order that they appear in the MMR address space, therebysimplifying the design of the BCH and of any software that configuresthe registers in the modules using either control scheme. For example,if a given register is 36 address units removed from the base address inthe MMR address space, that same register is 36 units offset from theBLOCK 502 identification number in the DMA control scheme. Using thisconfiguration, a programmer and/or software utility may seamlessly shiftbetween the two control schemes without the use of, for example, adecoder/mapping utility to translate between the schemes.

Reading status via DMA is performed in a manner similar to writingcontrol information through DMA. In one embodiment, module status valuesare moved into one or more shadow registers in accordance with theoutput capabilities of a given module (i.e., according to the clock rateof the module). The status information is then periodically sent via DMAin accordance with configuration registers (e.g., once every frameboundary or once every certain number of frames). The status informationmay be sent on a single DMA channel or simultaneously over multiple DMAchannels. As explained above, a STATWCNT field 516 in the BCH indicatesthe number of status registers in a module to be read and sent.

3. Reprogramming Modules for Different Frames

For a given pipe configuration, embodiments of the present inventionallow seamless reprogramming of parameter registers for modulescomprising of any given pipe, such that back-to-back frames may beprocessed with different coefficients or variations of the algorithmprovided by each module. A given module may have a latency of more thanone clock cycle; the pipeline stages at the end of the module may, forexample, be processing a first frame while the pipeline stages at thebeginning of the module may be processing a second frame. Theapplication registers that influence the behavior of the module may thusbe updated at different times for each pipeline of the module to ensurethat each frame is processed in accordance with its intended parameters.In one embodiment, the application registers in each pipeline areupdated as a frame boundary propagates through the pipeline in themodule. As described above, shadow registers may be used to update theapplication registers at the appropriate times; either thedirect-processor MMR mechanism or the DMA control mechanism updates theshadow registers only, and the updating of the application registers isstaggered in time.

The engine may control the granularity at which a given set ofparameters or a given configuration is applied: continuously for everyframe or for a fixed set of frames. Typically, the camera pipecontinuously gets frames from the camera sensor, while the memory pipereceives fixed sets of frames; either mode may be used with either pipe,however. The processor may be switched from continuous mode to fixedmode (and vice versa) without disabling the entire PVP engine. To applythe parameters to every frame, a flag may be set (e.g., a frame count or“FCNT” value may be programmed to zero). If a new set of control valuesare programmed, the new values are be applied on the next frame boundaryand applied to subsequent frames continuously thereafter. Thearchitecture may also provide a TAG mechanism on a separate status DMAchannel for ease of identification of the frames which have beenprocessed with new control parameters; the processor may use this TAGmechanism to determine which frames received processing using a certainset of parameters. The TAG data may be sent on the status DMA channeland may also be available for processor read.

To apply the parameters to a fixed set of frames, the FCNT value may beprogrammed to a nonzero value and thereafter monitored. Once thepredetermined number of frames has been processed, the pipeline halts(and the last frame is stuck in the pipeline). Once a next group offrames is identified and queued for processing, the FCNT value is setagain, and the next group begins processing (with, perhaps, a differentset of module parameters). Processing of the next group of frames pushesout the last frame of the previous set that was stuck in the pipeline.

The pipeline may be flushed if another parameter (e.g., a DRAIN bit) isset. If, for example, a finite set of frames is identified forprocessing and the DRAIN bit is set, upon completion of the last frame,the pipeline is flushed with dummy pixels so that the last frame in theset is output by the pipeline. As the last frame passes through thepipeline, the modules in the pipeline are disabled. In one embodiment,if the pipeline is in a continuous-frame mode and the DRAIN bit is set,the pipeline is immediately flushed and disabled. In either case, thenext set of control words may be set to wake up the pipeline (by use of,for example, a START bit in the BCH of the frames).

FIG. 6 illustrates an exemplary embodiment 600 of a first module 602, asecond module 604, a data control and crossbar unit 606 connecting them,and an image-pipe controller 608. When a new set of application registervalues are loaded into the shadow registers either by DMA ordirect-processor control, a “daisychainload” signal is driven togetherwith a frame sync signal to the first module 602. The first module 602updates its application registers in accordance with its internalpipeline delays as the first pixel in the input data passes through themodule 602 (i.e., if the first module includes five pipeline stages, itapplies the application-register values in turn to each of the fivestages as the pixel data is processed through). When the first module602 completes processing of the first pixel, it asserts thedaisychainload signal on its output, thereby instructing the secondmodule 604 to also begin applying the new application-register values(in accordance with its own pipeline configuration). A timing diagram700 of the daisychainload signal and the frame sync signal is shown inFIG. 7, and FIG. 8 illustrates a logic circuit 800 for gating the clocksand generating block reset based on a drain_done and start bit.

In addition to reconfiguring the parameters of modules for existingpipelines, the pipelines themselves may be reconfigured by adding ordeleting modules. For the real-time pipes (e.g., the camera pipes, orother pipes handling real-time data), the engine may include a mechanismthat permits a seamless, dynamic reconfiguration of the modulescomprising the camera pipes with a loss of one frame data only. Fornon-real-time pipes (e.g., a memory pipe), the engine may include amechanism that permits dynamic reconfiguration with a finite stall andno frame loss.

This mechanism may be implemented using a DRAIN bit in a register and anauto-disabling START bit in the respective modules. After a finite setof frames, conditional to DRAIN=1, the modules in the pipe are disabled(by, e.g., setting the START bit to 0). The new set of modules making upthe new configuration of the pipe may have the START bit set in the nextprogramming structure.

4. Examples

FIG. 9 illustrates an exemplary embodiment 900 of a PVP architecture.The system includes a camera input 902 and a memory input 904. Thecamera input 902 feeds three camera pipelines 906, 908, 910, and thememory input 904 feeds two memory pipelines 912, 914. The first camerapipeline 906 includes two convolution/down-scaler modules, apixel-magnitude and angle computation module, and a pixel-edgeclassifier module; the second camera pipeline 908 includes aconvolution/down-scaler module and an integral image computation module;the third camera pipeline 910 contains a threshold, histogram, andcompression module; the first memory pipeline 912 includes aconvolution/down-scaler module and an arithmetic computation unit; andthe second memory pipeline includes an up-down scaler.

FIG. 10 illustrates a system 1000 including a PVP 1002 and its supportand interface circuitry. A processor 1004 may directly control the PVP1002 via an MMR interface. A VSS crossbar circuit 1006 provides data tothe camera pipeline; the crossbar 1006 may select between a variety ofinput sources (e.g., PPI and PIXC inputs), thereby providing multiplecamera inputs. DDE arbitration units 1008 interface with external buses(e.g., AXI buses) to allow for DMA control; DDE units 1010 off-loadoutput data from the output-data format modules within the PVP 1002,provide input and output control and status data, and provide an inputto the memory pipeline.

What is claimed is:
 1. A pipelined video pre-processor comprising: aplurality of image-processing modules arranged in a pipeline; an inputport for receiving configuration parameters for the plurality ofmodules; an image-pipe controller for decoding the configurationparameters; and a shadow register for applying the configurationparameters to the plurality of modules, thereby altering theimage-processing characteristics of the modules.
 2. The pipelined videopre-processor of claim 1, wherein the pipeline is a memory pipeline forprocessing image data from a memory or a camera pipeline for processingimage data from a digital camera.
 3. The pipelined video pre-processorof claim 2, further comprising one or more additional pipelines, the oneor more additional pipelines being memory pipelines or camera pipelines.4. The pipelined video pre-processor of claim 1, wherein theconfiguration parameters are received from a processor or adirect-memory access (“DMA”) engine.
 5. The pipelined videopre-processor of claim 1, wherein the configuration parameters arearranged in a memory in a block-control structure and are accessed via aDMA channel.
 6. The pipelined video pre-processor of claim 5, whereinthe block-control structure comprises a block-control header and one ormore block-control words.
 7. The pipelined video pre-processor of claim6, wherein the offsets of the block-control words in the block-controlstructure correspond to addresses in a memory-mapped register (“MMR”)space.
 8. The pipelined video pre-processor of claim 1, wherein theconfiguration parameters are applied to a first frame of video data andupdated configuration parameters are applied to a second frame of videodata.
 9. The pipelined video pre-processor of claim 8, wherein differentpipeline stages in a module receive the updated configuration parametersat different points in time in accordance with a data boundary.
 10. Amethod of processing image frames in a pipelined video pre-processor,the method comprising: receiving configuration parameters for aplurality of image-processing modules in the pipelined videopre-processor; storing the configuration parameters in a shadowregister; applying the configuration parameters to the plurality ofimage-processing modules to thereby alter the image-processingcharacteristics of the modules.
 11. The method of claim 10, wherein theconfiguration parameters are received from a processor or a DMA engine.12. The method of claim 10, further comprising arranging the modules inone or more pipelines.
 13. The method of claim 12, wherein the one ormore pipelines comprise a memory pipeline for processing image data froma memory or a camera pipeline for processing image data from a digitalcamera.
 14. The method of claim 10, wherein the configuration parametersare arranged in a memory in a block-control structure and are accessedvia a DMA channel.
 15. The method of claim 14, wherein the block-controlstructure comprises a block-control header and one or more block-controlwords.
 16. The method of claim 15, wherein the offsets of theblock-control words in the block-control structure correspond toaddresses in a memory-mapped register (“MMR”) space.
 17. The method ofclaim 10, further comprising applying the configuration parameters to afirst frame of video data and applying updated configuration parametersto a second frame of video data.
 18. The method of claim 10, whereindifferent pipeline stages in a module receive the updated configurationparameters at different points in time in accordance with a databoundary.
 19. A digital-signal processor comprising a pipelined videopre-processor, the pipelined video pre-processor comprising: a pluralityof image-processing modules arranged in a pipeline; an input port forreceiving configuration parameters for the plurality of modules; animage-pipe controller for decoding the configuration parameters; and ashadow register for applying the configuration parameters to theplurality of modules, thereby altering the image-processingcharacteristics of the modules.
 20. The digital-signal processor ofclaim 19, wherein the pipeline is a memory pipeline for processing imagedata from a memory or a camera pipeline for processing image data from adigital camera.